<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>mxKeyHandler</title><link rel="stylesheet" type="text/css" href="../../styles/main.css"><script language=JavaScript src="../../javascript/main.js"></script><script language=JavaScript src="../../javascript/prettify.js"></script><script language=JavaScript src="../../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad();prettyPrint();"><script language=JavaScript><!--
if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>

<!--  Generated by Natural Docs, version 1.51 -->
<!--  http://www.naturaldocs.org  -->

<!-- saved from url=(0026)http://www.naturaldocs.org -->




<div id=Content><div class="CClass"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="mxKeyHandler"></a>mxKeyHandler</h1><div class=CBody><p>Event handler that listens to keystroke events.&nbsp; This is not a singleton, however, it is normally only required once if the target is the document element (default).</p><p>This handler installs a key event listener in the topmost DOM node and processes all events that originate from descandants of &lt;mxGraph.container&gt; or from the topmost DOM node.&nbsp; The latter means that all unhandled keystrokes are handled by this object regardless of the focused state of the <a href="#mxKeyHandler.graph" class=LVariable id=link30 onMouseOver="ShowTip(event, 'tt2', 'link30')" onMouseOut="HideTip('tt2')">graph</a>.</p><h4 class=CHeading>Example</h4><p>The following example creates a key handler that listens to the delete key (46) and deletes the selection cells if the graph is enabled.</p><blockquote><pre class="prettyprint">var keyHandler = new mxKeyHandler(graph);
keyHandler.bindKey(46, function(evt)
{
  if (graph.isEnabled())
  {
    graph.removeCells();
  }
});</pre></blockquote><h4 class=CHeading>Keycodes</h4><p>See <a href="http://tinyurl.com/yp8jgl" class=LURL target=_top>http://tinyurl.com/yp8jgl</a> or <a href="http://tinyurl.com/229yqw" class=LURL target=_top>http://tinyurl.com/229yqw</a> for a list of keycodes or install a key event listener into the document element and print the key codes of the respective events to the console.</p><p>To support the Command key and the Control key on the Mac, the following code can be used.</p><blockquote><pre class="prettyprint">keyHandler.getFunction = function(evt)
{
  if (evt != null)
  {
    return (mxEvent.isControlDown(evt) || (mxClient.IS_MAC &amp;&amp; evt.metaKey)) ? this.controlKeys[evt.keyCode] : this.normalKeys[evt.keyCode];
  }

  return null;
};</pre></blockquote><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#mxKeyHandler" >mxKeyHandler</a></td><td class=SDescription>Event handler that listens to keystroke events. </td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#mxKeyHandler.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#mxKeyHandler.mxKeyHandler" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">mxKeyHandler</a></td><td class=SDescription>Constructs an event handler that executes functions bound to specific keystrokes.</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#mxKeyHandler.Variables" >Variables</a></td><td class=SDescription></td></tr><tr class="SVariable SIndent2 SMarked"><td class=SEntry><a href="#mxKeyHandler.graph" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">graph</a></td><td class=SDescription>Reference to the <a href="../view/mxGraph-js.html#mxGraph" class=LClass id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">mxGraph</a> associated with this handler.</td></tr><tr class="SVariable SIndent2"><td class=SEntry><a href="#mxKeyHandler.target" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">target</a></td><td class=SDescription>Reference to the target DOM, that is, the DOM node where the key event listeners are installed.</td></tr><tr class="SVariable SIndent2 SMarked"><td class=SEntry><a href="#mxKeyHandler.normalKeys" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">normalKeys</a></td><td class=SDescription>Maps from keycodes to functions for non-pressed control keys.</td></tr><tr class="SVariable SIndent2"><td class=SEntry><a href="#mxKeyHandler.shiftKeys" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">shiftKeys</a></td><td class=SDescription>Maps from keycodes to functions for pressed shift keys.</td></tr><tr class="SVariable SIndent2 SMarked"><td class=SEntry><a href="#mxKeyHandler.controlKeys" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">controlKeys</a></td><td class=SDescription>Maps from keycodes to functions for pressed control keys.</td></tr><tr class="SVariable SIndent2"><td class=SEntry><a href="#mxKeyHandler.controlShiftKeys" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')">controlShiftKeys</a></td><td class=SDescription>Maps from keycodes to functions for pressed control and shift keys.</td></tr><tr class="SVariable SIndent2 SMarked"><td class=SEntry><a href="#mxKeyHandler.enabled" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')">enabled</a></td><td class=SDescription>Specifies if events are handled. </td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#mxKeyHandler.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#mxKeyHandler.isEnabled" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')">isEnabled</a></td><td class=SDescription>Returns true if events are handled. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#mxKeyHandler.setEnabled" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')">setEnabled</a></td><td class=SDescription>Enables or disables event handling by updating <a href="#mxKeyHandler.enabled" class=LVariable id=link12 onMouseOver="ShowTip(event, 'tt9', 'link12')" onMouseOut="HideTip('tt9')">enabled</a>.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#mxKeyHandler.bindKey" id=link13 onMouseOver="ShowTip(event, 'tt12', 'link13')" onMouseOut="HideTip('tt12')">bindKey</a></td><td class=SDescription>Binds the specified keycode to the given function. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#mxKeyHandler.bindShiftKey" id=link14 onMouseOver="ShowTip(event, 'tt13', 'link14')" onMouseOut="HideTip('tt13')">bindShiftKey</a></td><td class=SDescription>Binds the specified keycode to the given function. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#mxKeyHandler.bindControlKey" id=link15 onMouseOver="ShowTip(event, 'tt14', 'link15')" onMouseOut="HideTip('tt14')">bindControlKey</a></td><td class=SDescription>Binds the specified keycode to the given function. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#mxKeyHandler.bindControlShiftKey" id=link16 onMouseOver="ShowTip(event, 'tt15', 'link16')" onMouseOut="HideTip('tt15')">bindControlShiftKey</a></td><td class=SDescription>Binds the specified keycode to the given function. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#mxKeyHandler.isControlDown" id=link17 onMouseOver="ShowTip(event, 'tt16', 'link17')" onMouseOut="HideTip('tt16')">isControlDown</a></td><td class=SDescription>Returns true if the control key is pressed. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#mxKeyHandler.getFunction" id=link18 onMouseOver="ShowTip(event, 'tt17', 'link18')" onMouseOut="HideTip('tt17')">getFunction</a></td><td class=SDescription>Returns the function associated with the given key event or null if no function is associated with the given event.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#mxKeyHandler.isGraphEvent" id=link19 onMouseOver="ShowTip(event, 'tt18', 'link19')" onMouseOut="HideTip('tt18')">isGraphEvent</a></td><td class=SDescription>Returns true if the event should be processed by this handler, that is, if the event source is either the target, one of its direct children, a descendant of the &lt;mxGraph.container&gt;, or the <a href="../view/mxGraph-js.html#mxGraph.cellEditor" class=LVariable id=link20 onMouseOver="ShowTip(event, 'tt19', 'link20')" onMouseOut="HideTip('tt19')">mxGraph.cellEditor</a> of the <a href="#mxKeyHandler.graph" class=LVariable id=link21 onMouseOver="ShowTip(event, 'tt2', 'link21')" onMouseOut="HideTip('tt2')">graph</a>.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#mxKeyHandler.keyDown" id=link22 onMouseOver="ShowTip(event, 'tt20', 'link22')" onMouseOut="HideTip('tt20')">keyDown</a></td><td class=SDescription>Handles the event by invoking the function bound to the respective keystroke if <a href="#mxKeyHandler.isEnabledForEvent" class=LFunction id=link23 onMouseOver="ShowTip(event, 'tt21', 'link23')" onMouseOut="HideTip('tt21')">isEnabledForEvent</a> returns true for the given event and if <a href="#mxKeyHandler.isEventIgnored" class=LFunction id=link24 onMouseOver="ShowTip(event, 'tt22', 'link24')" onMouseOut="HideTip('tt22')">isEventIgnored</a> returns false, except for escape for which <a href="#mxKeyHandler.isEventIgnored" class=LFunction id=link25 onMouseOver="ShowTip(event, 'tt22', 'link25')" onMouseOut="HideTip('tt22')">isEventIgnored</a> is not invoked.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#mxKeyHandler.isEnabledForEvent" id=link26 onMouseOver="ShowTip(event, 'tt21', 'link26')" onMouseOut="HideTip('tt21')">isEnabledForEvent</a></td><td class=SDescription>Returns true if the given event should be handled. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#mxKeyHandler.isEventIgnored" id=link27 onMouseOver="ShowTip(event, 'tt22', 'link27')" onMouseOut="HideTip('tt22')">isEventIgnored</a></td><td class=SDescription>Returns true if the given keystroke should be ignored. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#mxKeyHandler.escape" id=link28 onMouseOver="ShowTip(event, 'tt23', 'link28')" onMouseOut="HideTip('tt23')">escape</a></td><td class=SDescription>Hook to process ESCAPE keystrokes. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#mxKeyHandler.destroy" id=link29 onMouseOver="ShowTip(event, 'tt24', 'link29')" onMouseOut="HideTip('tt24')">destroy</a></td><td class=SDescription>Destroys the handler and all its references into the DOM. </td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div>

<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.Functions"></a>Functions</h3></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.mxKeyHandler"></a>mxKeyHandler</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>function mxKeyHandler(</td><td class="PParameter  prettyprint " nowrap>graph,</td></tr><tr><td></td><td class="PParameter  prettyprint " nowrap>target</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Constructs an event handler that executes functions bound to specific keystrokes.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>graph</td><td class=CDLDescription>Reference to the associated <a href="../view/mxGraph-js.html#mxGraph" class=LClass id=link31 onMouseOver="ShowTip(event, 'tt3', 'link31')" onMouseOut="HideTip('tt3')">mxGraph</a>.</td></tr><tr><td class=CDLEntry>target</td><td class=CDLDescription>Optional reference to the event target.&nbsp; If null, the document element is used as the event target, that is, the object where the key event listener is installed.</td></tr></table></div></div></div>

<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.Variables"></a>Variables</h3></div></div>

<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.graph"></a>graph</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.graph</td></tr></table></blockquote><p>Reference to the <a href="../view/mxGraph-js.html#mxGraph" class=LClass id=link32 onMouseOver="ShowTip(event, 'tt3', 'link32')" onMouseOut="HideTip('tt3')">mxGraph</a> associated with this handler.</p></div></div></div>

<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.target"></a>target</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.target</td></tr></table></blockquote><p>Reference to the target DOM, that is, the DOM node where the key event listeners are installed.</p></div></div></div>

<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.normalKeys"></a>normalKeys</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.normalKeys</td></tr></table></blockquote><p>Maps from keycodes to functions for non-pressed control keys.</p></div></div></div>

<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.shiftKeys"></a>shiftKeys</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.shiftKeys</td></tr></table></blockquote><p>Maps from keycodes to functions for pressed shift keys.</p></div></div></div>

<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.controlKeys"></a>controlKeys</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.controlKeys</td></tr></table></blockquote><p>Maps from keycodes to functions for pressed control keys.</p></div></div></div>

<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.controlShiftKeys"></a>controlShiftKeys</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.controlShiftKeys</td></tr></table></blockquote><p>Maps from keycodes to functions for pressed control and shift keys.</p></div></div></div>

<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.enabled"></a>enabled</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.enabled</td></tr></table></blockquote><p>Specifies if events are handled.&nbsp; Default is true.</p></div></div></div>

<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.Functions"></a>Functions</h3></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.isEnabled"></a>isEnabled</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.isEnabled = function()</td></tr></table></blockquote><p>Returns true if events are handled.&nbsp; This implementation returns <a href="#mxKeyHandler.enabled" class=LVariable id=link33 onMouseOver="ShowTip(event, 'tt9', 'link33')" onMouseOut="HideTip('tt9')">enabled</a>.</p></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.setEnabled"></a>setEnabled</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.setEnabled = function(</td><td class="PParameter  prettyprint " nowrap>enabled</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Enables or disables event handling by updating <a href="#mxKeyHandler.enabled" class=LVariable id=link34 onMouseOver="ShowTip(event, 'tt9', 'link34')" onMouseOut="HideTip('tt9')">enabled</a>.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>enabled</td><td class=CDLDescription>Boolean that specifies the new enabled state.</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.bindKey"></a>bindKey</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.bindKey = function(</td><td class="PParameter  prettyprint " nowrap>code,</td></tr><tr><td></td><td class="PParameter  prettyprint " nowrap>funct</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Binds the specified keycode to the given function.&nbsp; This binding is used if the control key is not pressed.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>code</td><td class=CDLDescription>Integer that specifies the keycode.</td></tr><tr><td class=CDLEntry>funct</td><td class=CDLDescription>JavaScript function that takes the key event as an argument.</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.bindShiftKey"></a>bindShiftKey</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.bindShiftKey = function(</td><td class="PParameter  prettyprint " nowrap>code,</td></tr><tr><td></td><td class="PParameter  prettyprint " nowrap>funct</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Binds the specified keycode to the given function.&nbsp; This binding is used if the shift key is pressed.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>code</td><td class=CDLDescription>Integer that specifies the keycode.</td></tr><tr><td class=CDLEntry>funct</td><td class=CDLDescription>JavaScript function that takes the key event as an argument.</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.bindControlKey"></a>bindControlKey</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.bindControlKey = function(</td><td class="PParameter  prettyprint " nowrap>code,</td></tr><tr><td></td><td class="PParameter  prettyprint " nowrap>funct</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Binds the specified keycode to the given function.&nbsp; This binding is used if the control key is pressed.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>code</td><td class=CDLDescription>Integer that specifies the keycode.</td></tr><tr><td class=CDLEntry>funct</td><td class=CDLDescription>JavaScript function that takes the key event as an argument.</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.bindControlShiftKey"></a>bindControlShiftKey</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.bindControlShiftKey = function(</td><td class="PParameter  prettyprint " nowrap>code,</td></tr><tr><td></td><td class="PParameter  prettyprint " nowrap>funct</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Binds the specified keycode to the given function.&nbsp; This binding is used if the control and shift key are pressed.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>code</td><td class=CDLDescription>Integer that specifies the keycode.</td></tr><tr><td class=CDLEntry>funct</td><td class=CDLDescription>JavaScript function that takes the key event as an argument.</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.isControlDown"></a>isControlDown</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.isControlDown = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns true if the control key is pressed.&nbsp; This uses <a href="../util/mxEvent-js.html#mxEvent.isControlDown" class=LFunction id=link35 onMouseOver="ShowTip(event, 'tt25', 'link35')" onMouseOut="HideTip('tt25')">mxEvent.isControlDown</a>.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>evt</td><td class=CDLDescription>Key event whose control key pressed state should be returned.</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.getFunction"></a>getFunction</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.getFunction = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns the function associated with the given key event or null if no function is associated with the given event.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>evt</td><td class=CDLDescription>Key event whose associated function should be returned.</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.isGraphEvent"></a>isGraphEvent</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.isGraphEvent = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns true if the event should be processed by this handler, that is, if the event source is either the target, one of its direct children, a descendant of the &lt;mxGraph.container&gt;, or the <a href="../view/mxGraph-js.html#mxGraph.cellEditor" class=LVariable id=link36 onMouseOver="ShowTip(event, 'tt19', 'link36')" onMouseOut="HideTip('tt19')">mxGraph.cellEditor</a> of the <a href="#mxKeyHandler.graph" class=LVariable id=link37 onMouseOver="ShowTip(event, 'tt2', 'link37')" onMouseOut="HideTip('tt2')">graph</a>.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>evt</td><td class=CDLDescription>Key event that represents the keystroke.</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.keyDown"></a>keyDown</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.keyDown = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Handles the event by invoking the function bound to the respective keystroke if <a href="#mxKeyHandler.isEnabledForEvent" class=LFunction id=link38 onMouseOver="ShowTip(event, 'tt21', 'link38')" onMouseOut="HideTip('tt21')">isEnabledForEvent</a> returns true for the given event and if <a href="#mxKeyHandler.isEventIgnored" class=LFunction id=link39 onMouseOver="ShowTip(event, 'tt22', 'link39')" onMouseOut="HideTip('tt22')">isEventIgnored</a> returns false, except for escape for which <a href="#mxKeyHandler.isEventIgnored" class=LFunction id=link40 onMouseOver="ShowTip(event, 'tt22', 'link40')" onMouseOut="HideTip('tt22')">isEventIgnored</a> is not invoked.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>evt</td><td class=CDLDescription>Key event that represents the keystroke.</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.isEnabledForEvent"></a>isEnabledForEvent</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.isEnabledForEvent = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns true if the given event should be handled.&nbsp; <a href="#mxKeyHandler.isEventIgnored" class=LFunction id=link41 onMouseOver="ShowTip(event, 'tt22', 'link41')" onMouseOut="HideTip('tt22')">isEventIgnored</a> is called later if the event is not an escape key stroke, in which case <a href="#mxKeyHandler.escape" class=LFunction id=link42 onMouseOver="ShowTip(event, 'tt23', 'link42')" onMouseOut="HideTip('tt23')">escape</a> is called.&nbsp; This implementation returns true if <a href="#mxKeyHandler.isEnabled" class=LFunction id=link43 onMouseOver="ShowTip(event, 'tt10', 'link43')" onMouseOut="HideTip('tt10')">isEnabled</a> returns true for both, this handler and <a href="#mxKeyHandler.graph" class=LVariable id=link44 onMouseOver="ShowTip(event, 'tt2', 'link44')" onMouseOut="HideTip('tt2')">graph</a>, if the event is not consumed and if <a href="#mxKeyHandler.isGraphEvent" class=LFunction id=link45 onMouseOver="ShowTip(event, 'tt18', 'link45')" onMouseOut="HideTip('tt18')">isGraphEvent</a> returns true.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>evt</td><td class=CDLDescription>Key event that represents the keystroke.</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.isEventIgnored"></a>isEventIgnored</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.isEventIgnored = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Returns true if the given keystroke should be ignored.&nbsp; This returns graph.isEditing().</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>evt</td><td class=CDLDescription>Key event that represents the keystroke.</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.escape"></a>escape</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.escape = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote><p>Hook to process ESCAPE keystrokes.&nbsp; This implementation invokes <a href="../view/mxGraph-js.html#mxGraph.stopEditing" class=LFunction id=link46 onMouseOver="ShowTip(event, 'tt26', 'link46')" onMouseOut="HideTip('tt26')">mxGraph.stopEditing</a> to cancel the current editing, connecting and/or other ongoing modifications.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>evt</td><td class=CDLDescription>Key event that represents the keystroke.&nbsp; Possible keycode in this case is 27 (ESCAPE).</td></tr></table></div></div></div>

<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="mxKeyHandler.destroy"></a>destroy</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.destroy = function()</td></tr></table></blockquote><p>Destroys the handler and all its references into the DOM.&nbsp; This does normally not need to be called, it is called automatically when the window unloads (in IE).</p></div></div></div>

</div><!--Content-->


<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer-->


<div id=Menu><div class=MEntry><div class=MFile><a href="../index-txt.html">API Specification</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Editor</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MFile><a href="../editor/mxDefaultKeyHandler-js.html">mxDefaultKeyHandler</a></div></div><div class=MEntry><div class=MFile><a href="../editor/mxDefaultPopupMenu-js.html">mxDefaultPopupMenu</a></div></div><div class=MEntry><div class=MFile><a href="../editor/mxDefaultToolbar-js.html">mxDefaultToolbar</a></div></div><div class=MEntry><div class=MFile><a href="../editor/mxEditor-js.html">mxEditor</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent2')">Handler</a><div class=MGroupContent id=MGroupContent2><div class=MEntry><div class=MFile><a href="mxCellHighlight-js.html">mxCellHighlight</a></div></div><div class=MEntry><div class=MFile><a href="mxCellMarker-js.html">mxCellMarker</a></div></div><div class=MEntry><div class=MFile><a href="mxCellTracker-js.html">mxCellTracker</a></div></div><div class=MEntry><div class=MFile><a href="mxConnectionHandler-js.html">mxConnectionHandler</a></div></div><div class=MEntry><div class=MFile><a href="mxConstraintHandler-js.html">mxConstraintHandler</a></div></div><div class=MEntry><div class=MFile><a href="mxEdgeHandler-js.html">mxEdgeHandler</a></div></div><div class=MEntry><div class=MFile><a href="mxEdgeSegmentHandler-js.html">mxEdgeSegmentHandler.js</a></div></div><div class=MEntry><div class=MFile><a href="mxElbowEdgeHandler-js.html">mxElbowEdgeHandler</a></div></div><div class=MEntry><div class=MFile><a href="mxGraphHandler-js.html">mxGraphHandler</a></div></div><div class=MEntry><div class=MFile><a href="mxHandle-js.html">mxHandle</a></div></div><div class=MEntry><div class=MFile id=MSelected>mxKeyHandler</div></div><div class=MEntry><div class=MFile><a href="mxPanningHandler-js.html">mxPanningHandler</a></div></div><div class=MEntry><div class=MFile><a href="mxPopupMenuHandler-js.html">mxPopupMenuHandler</a></div></div><div class=MEntry><div class=MFile><a href="mxRubberband-js.html">mxRubberband</a></div></div><div class=MEntry><div class=MFile><a href="mxSelectionCellsHandler-js.html">mxSelectionCellsHandler</a></div></div><div class=MEntry><div class=MFile><a href="mxTooltipHandler-js.html">mxTooltipHandler</a></div></div><div class=MEntry><div class=MFile><a href="mxVertexHandler-js.html">mxVertexHandler</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent3')">Io</a><div class=MGroupContent id=MGroupContent3><div class=MEntry><div class=MFile><a href="../io/mxCellCodec-js.html">mxCellCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxChildChangeCodec-js.html">mxChildChangeCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxCodec-js.html">mxCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxCodecRegistry-js.html">mxCodecRegistry</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxDefaultKeyHandlerCodec-js.html">mxDefaultKeyHandlerCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxDefaultPopupMenuCodec-js.html">mxDefaultPopupMenuCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxDefaultToolbarCodec-js.html">mxDefaultToolbarCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxEditorCodec-js.html">mxEditorCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxGenericChangeCodec-js.html">mxGenericChangeCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxGraphCodec-js.html">mxGraphCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxGraphViewCodec-js.html">mxGraphViewCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxModelCodec-js.html">mxModelCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxObjectCodec-js.html">mxObjectCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxRootChangeCodec-js.html">mxRootChangeCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxStylesheetCodec-js.html">mxStylesheetCodec</a></div></div><div class=MEntry><div class=MFile><a href="../io/mxTerminalChangeCodec-js.html">mxTerminalChangeCodec</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent7')">Layout</a><div class=MGroupContent id=MGroupContent7><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent6')">Hierarchical</a><div class=MGroupContent id=MGroupContent6><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent4')">Model</a><div class=MGroupContent id=MGroupContent4><div class=MEntry><div class=MFile><a href="../layout/hierarchical/model/mxGraphAbstractHierarchyCell-js.html">mxGraphAbstractHierarchyCell</a></div></div><div class=MEntry><div class=MFile><a href="../layout/hierarchical/model/mxGraphHierarchyEdge-js.html">mxGraphHierarchyEdge</a></div></div><div class=MEntry><div class=MFile><a href="../layout/hierarchical/model/mxGraphHierarchyModel-js.html">mxGraphHierarchyModel</a></div></div><div class=MEntry><div class=MFile><a href="../layout/hierarchical/model/mxGraphHierarchyNode-js.html">mxGraphHierarchyNode</a></div></div><div class=MEntry><div class=MFile><a href="../layout/hierarchical/model/mxSwimlaneModel-js.html">mxSwimlaneModel</a></div></div></div></div></div><div class=MEntry><div class=MFile><a href="../layout/hierarchical/mxHierarchicalLayout-js.html">mxHierarchicalLayout</a></div></div><div class=MEntry><div class=MFile><a href="../layout/hierarchical/mxSwimlaneLayout-js.html">mxSwimlaneLayout</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent5')">Stage</a><div class=MGroupContent id=MGroupContent5><div class=MEntry><div class=MFile><a href="../layout/hierarchical/stage/mxCoordinateAssignment-js.html">mxCoordinateAssignment</a></div></div><div class=MEntry><div class=MFile><a href="../layout/hierarchical/stage/mxHierarchicalLayoutStage-js.html">mxHierarchicalLayoutStage</a></div></div><div class=MEntry><div class=MFile><a href="../layout/hierarchical/stage/mxMedianHybridCrossingReduction-js.html">mxMedianHybridCrossingReduction</a></div></div><div class=MEntry><div class=MFile><a href="../layout/hierarchical/stage/mxMinimumCycleRemover-js.html">mxMinimumCycleRemover</a></div></div><div class=MEntry><div class=MFile><a href="../layout/hierarchical/stage/mxSwimlaneOrdering-js.html">mxSwimlaneOrdering</a></div></div></div></div></div></div></div></div><div class=MEntry><div class=MFile><a href="../layout/mxCircleLayout-js.html">mxCircleLayout</a></div></div><div class=MEntry><div class=MFile><a href="../layout/mxCompactTreeLayout-js.html">mxCompactTreeLayout</a></div></div><div class=MEntry><div class=MFile><a href="../layout/mxCompositeLayout-js.html">mxCompositeLayout</a></div></div><div class=MEntry><div class=MFile><a href="../layout/mxEdgeLabelLayout-js.html">mxEdgeLabelLayout</a></div></div><div class=MEntry><div class=MFile><a href="../layout/mxFastOrganicLayout-js.html">mxFastOrganicLayout</a></div></div><div class=MEntry><div class=MFile><a href="../layout/mxGraphLayout-js.html">mxGraphLayout</a></div></div><div class=MEntry><div class=MFile><a href="../layout/mxParallelEdgeLayout-js.html">mxParallelEdgeLayout</a></div></div><div class=MEntry><div class=MFile><a href="../layout/mxPartitionLayout-js.html">mxPartitionLayout</a></div></div><div class=MEntry><div class=MFile><a href="../layout/mxRadialTreeLayout-js.html">mxRadialTreeLayout</a></div></div><div class=MEntry><div class=MFile><a href="../layout/mxStackLayout-js.html">mxStackLayout</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent8')">Model</a><div class=MGroupContent id=MGroupContent8><div class=MEntry><div class=MFile><a href="../model/mxCell-js.html">mxCell</a></div></div><div class=MEntry><div class=MFile><a href="../model/mxCellPath-js.html">mxCellPath</a></div></div><div class=MEntry><div class=MFile><a href="../model/mxGeometry-js.html">mxGeometry</a></div></div><div class=MEntry><div class=MFile><a href="../model/mxGraphModel-js.html">mxGraphModel</a></div></div></div></div></div><div class=MEntry><div class=MFile><a href="../mxClient-js.html">mxClient</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent9')">Shape</a><div class=MGroupContent id=MGroupContent9><div class=MEntry><div class=MFile><a href="../shape/mxActor-js.html">mxActor</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxArrow-js.html">mxArrow</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxArrowConnector-js.html">mxArrowConnector</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxCloud-js.html">mxCloud</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxConnector-js.html">mxConnector</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxCylinder-js.html">mxCylinder</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxDoubleEllipse-js.html">mxDoubleEllipse</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxEllipse-js.html">mxEllipse</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxHexagon-js.html">mxHexagon</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxImageShape-js.html">mxImageShape</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxLabel-js.html">mxLabel</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxLine-js.html">mxLine</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxMarker-js.html">mxMarker</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxPolyline-js.html">mxPolyline</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxRectangleShape-js.html">mxRectangleShape</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxRhombus-js.html">mxRhombus</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxShape-js.html">mxShape</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxStencil-js.html">mxStencil</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxStencilRegistry-js.html">mxStencilRegistry</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxSwimlane-js.html">mxSwimlane</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxText-js.html">mxText</a></div></div><div class=MEntry><div class=MFile><a href="../shape/mxTriangle-js.html">mxTriangle</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent10')">Util</a><div class=MGroupContent id=MGroupContent10><div class=MEntry><div class=MFile><a href="../util/mxAbstractCanvas2D-js.html">mxAbstractCanvas2D</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxAnimation-js.html">mxAnimation</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxAutoSaveManager-js.html">mxAutoSaveManager</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxClipboard-js.html">mxClipboard</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxConstants-js.html">mxConstants</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxDictionary-js.html">mxDictionary</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxDivResizer-js.html">mxDivResizer</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxDragSource-js.html">mxDragSource</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxEffects-js.html">mxEffects</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxEvent-js.html">mxEvent</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxEventObject-js.html">mxEventObject</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxEventSource-js.html">mxEventSource</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxForm-js.html">mxForm</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxGuide-js.html">mxGuide</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxImage-js.html">mxImage</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxImageBundle-js.html">mxImageBundle</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxImageExport-js.html">mxImageExport</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxLog-js.html">mxLog</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxMorphing-js.html">mxMorphing</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxMouseEvent-js.html">mxMouseEvent</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxObjectIdentity-js.html">mxObjectIdentity</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxPanningManager-js.html">mxPanningManager</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxPoint-js.html">mxPoint</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxPopupMenu-js.html">mxPopupMenu</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxRectangle-js.html">mxRectangle</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxResources-js.html">mxResources</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxSvgCanvas2D-js.html">mxSvgCanvas2D</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxToolbar-js.html">mxToolbar</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxUndoableEdit-js.html">mxUndoableEdit</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxUndoManager-js.html">mxUndoManager</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxUrlConverter-js.html">mxUrlConverter</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxUtils-js.html">mxUtils</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxVmlCanvas2D-js.html">mxVmlCanvas2D</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxWindow-js.html">mxWindow</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxXmlCanvas2D-js.html">mxXmlCanvas2D</a></div></div><div class=MEntry><div class=MFile><a href="../util/mxXmlRequest-js.html">mxXmlRequest</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent11')">View</a><div class=MGroupContent id=MGroupContent11><div class=MEntry><div class=MFile><a href="../view/mxCellEditor-js.html">mxCellEditor</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxCellOverlay-js.html">mxCellOverlay</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxCellRenderer-js.html">mxCellRenderer</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxCellState-js.html">mxCellState</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxCellStatePreview-js.html">mxCellStatePreview</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxConnectionConstraint-js.html">mxConnectionConstraint</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxEdgeStyle-js.html">mxEdgeStyle</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxGraph-js.html">mxGraph</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxGraphSelectionModel-js.html">mxGraphSelectionModel</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxGraphView-js.html">mxGraphView</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxLayoutManager-js.html">mxLayoutManager</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxMultiplicity-js.html">mxMultiplicity</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxOutline-js.html">mxOutline</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxPerimeter-js.html">mxPerimeter</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxPrintPreview-js.html">mxPrintPreview</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxStyleRegistry-js.html">mxStyleRegistry</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxStylesheet-js.html">mxStylesheet</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxSwimlaneManager-js.html">mxSwimlaneManager</a></div></div><div class=MEntry><div class=MFile><a href="../view/mxTemporaryCellStates-js.html">mxTemporaryCellStates</a></div></div></div></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent12')">Index</a><div class=MGroupContent id=MGroupContent12><div class=MEntry><div class=MIndex><a href="../../index/Classes.html">Classes</a></div></div><div class=MEntry><div class=MIndex><a href="../../index/Cookies.html">Cookies</a></div></div><div class=MEntry><div class=MIndex><a href="../../index/Events.html">Events</a></div></div><div class=MEntry><div class=MIndex><a href="../../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../../index/Variables.html">Variables</a></div></div></div></div></div><script type="text/javascript"><!--
var searchPanel = new SearchPanel("searchPanel", "HTML", "../../search");
--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option  id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Cookies">Cookies</option><option value="Events">Events</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Variables">Variables</option></select></div><script language=JavaScript><!--
HideAllBut([2], 13);// --></script></div><!--Menu-->



<!--START_ND_TOOLTIPS-->
<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>function mxKeyHandler(</td><td class="PParameter  prettyprint " nowrap>graph,</td></tr><tr><td></td><td class="PParameter  prettyprint " nowrap>target</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Constructs an event handler that executes functions bound to specific keystrokes.</div></div><div class=CToolTip id="tt2"><div class=CVariable><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.graph</td></tr></table></blockquote>Reference to the mxGraph associated with this handler.</div></div><div class=CToolTip id="tt3"><div class=CClass>Extends mxEventSource to implement a graph component for the browser. </div></div><div class=CToolTip id="tt4"><div class=CVariable><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.target</td></tr></table></blockquote>Reference to the target DOM, that is, the DOM node where the key event listeners are installed.</div></div><div class=CToolTip id="tt5"><div class=CVariable><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.normalKeys</td></tr></table></blockquote>Maps from keycodes to functions for non-pressed control keys.</div></div><div class=CToolTip id="tt6"><div class=CVariable><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.shiftKeys</td></tr></table></blockquote>Maps from keycodes to functions for pressed shift keys.</div></div><div class=CToolTip id="tt7"><div class=CVariable><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.controlKeys</td></tr></table></blockquote>Maps from keycodes to functions for pressed control keys.</div></div><div class=CToolTip id="tt8"><div class=CVariable><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.controlShiftKeys</td></tr></table></blockquote>Maps from keycodes to functions for pressed control and shift keys.</div></div><div class=CToolTip id="tt9"><div class=CVariable><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.enabled</td></tr></table></blockquote>Specifies if events are handled. </div></div><div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.isEnabled = function()</td></tr></table></blockquote>Returns true if events are handled. </div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.setEnabled = function(</td><td class="PParameter  prettyprint " nowrap>enabled</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Enables or disables event handling by updating enabled.</div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.bindKey = function(</td><td class="PParameter  prettyprint " nowrap>code,</td></tr><tr><td></td><td class="PParameter  prettyprint " nowrap>funct</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Binds the specified keycode to the given function. </div></div><div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.bindShiftKey = function(</td><td class="PParameter  prettyprint " nowrap>code,</td></tr><tr><td></td><td class="PParameter  prettyprint " nowrap>funct</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Binds the specified keycode to the given function. </div></div><div class=CToolTip id="tt14"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.bindControlKey = function(</td><td class="PParameter  prettyprint " nowrap>code,</td></tr><tr><td></td><td class="PParameter  prettyprint " nowrap>funct</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Binds the specified keycode to the given function. </div></div><div class=CToolTip id="tt15"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.bindControlShiftKey = function(</td><td class="PParameter  prettyprint " nowrap>code,</td></tr><tr><td></td><td class="PParameter  prettyprint " nowrap>funct</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Binds the specified keycode to the given function. </div></div><div class=CToolTip id="tt16"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.isControlDown = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Returns true if the control key is pressed. </div></div><div class=CToolTip id="tt17"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.getFunction = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Returns the function associated with the given key event or null if no function is associated with the given event.</div></div><div class=CToolTip id="tt18"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.isGraphEvent = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Returns true if the event should be processed by this handler, that is, if the event source is either the target, one of its direct children, a descendant of the mxGraph.container, or the mxGraph.cellEditor of the graph.</div></div><div class=CToolTip id="tt19"><div class=CVariable><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxGraph.prototype.cellEditor</td></tr></table></blockquote>Holds the mxCellEditor that is used as the in-place editing.</div></div><div class=CToolTip id="tt20"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.keyDown = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Handles the event by invoking the function bound to the respective keystroke if isEnabledForEvent returns true for the given event and if isEventIgnored returns false, except for escape for which isEventIgnored is not invoked.</div></div><div class=CToolTip id="tt21"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.isEnabledForEvent = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Returns true if the given event should be handled. </div></div><div class=CToolTip id="tt22"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.isEventIgnored = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Returns true if the given keystroke should be ignored. </div></div><div class=CToolTip id="tt23"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxKeyHandler.prototype.escape = function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Hook to process ESCAPE keystrokes. </div></div><div class=CToolTip id="tt24"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td class="prettyprint">mxKeyHandler.prototype.destroy = function()</td></tr></table></blockquote>Destroys the handler and all its references into the DOM. </div></div><div class=CToolTip id="tt25"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>isControlDown: function(</td><td class="PParameter  prettyprint " nowrap>evt</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Returns true if the control key is pressed for the given event.</div></div><div class=CToolTip id="tt26"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class="Prototype"><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class="PBeforeParameters  prettyprint "nowrap>mxGraph.prototype.stopEditing = function(</td><td class="PParameter  prettyprint " nowrap>cancel</td><td class="PAfterParameters  prettyprint "nowrap>)</td></tr></table></td></tr></table></blockquote>Stops the current editing  and fires a editingStopped event.</div></div><!--END_ND_TOOLTIPS-->




<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div>


<script language=JavaScript><!--
if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>